package com.grep.base.util;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
import java.util.Random;
import java.util.UUID;
/**
 * @author yuang：
 * 独自编写的生成的UUID有时会出现重复现象，已改为java提供的生成方式	
 */
public class UUIDGenerator {
//    private static String baseUUID = null;
//    private static long incrementingValue = 0;
//
//
//    private static Random myRand = null;

    public static String getUUID() {
    	
    	String uuid = UUID.randomUUID().toString();
    	
    	return uuid;
    	
//        if (baseUUID == null) {
//            baseUUID = getInitialUUID();
//        }
//        if(++incrementingValue >= Long.MAX_VALUE){
//            incrementingValue = 0;
//        }
//        return baseUUID + new Date().getTime() + incrementingValue;
    }
//
//    protected static String getInitialUUID() {
//        if (myRand == null) {
//            myRand = new Random();
//        }
//        long rand = myRand.nextLong();
//        String sid;
//        try {
//            sid = InetAddress.getLocalHost().toString();
//        } catch (UnknownHostException e) {
//            sid = Thread.currentThread().getName();
//        }
//        StringBuffer sb = new StringBuffer();
//        sb.append(sid);
//        sb.append(":");
//        sb.append(Long.toString(rand));
//        MessageDigest md5 = null;
//        try {
//            md5 = MessageDigest.getInstance("MD5");
//        } catch (NoSuchAlgorithmException e) {
//            //System.out.println("Error: " + e);
//            //todo heve to be properly handle
//        }
//        md5.update(sb.toString().getBytes());
//        byte[] array = md5.digest();
//        StringBuffer sb2 = new StringBuffer();
//        for (int j = 0; j < array.length; ++j) {
//            int b = array[j] & 0xFF;
//            sb2.append(Integer.toHexString(b));
//        }
//        int begin = myRand.nextInt();
//        if (begin < 0) {
//			begin = begin * -1;
//		}
//        begin = begin % 8;
//        return sb2.toString().substring(begin, begin + 18).toUpperCase();
//    }
}
